The term CAPTCHA is an acronym for “Completely Automated Public Turing test to tell Computers and Humans Apart. CAPTCHA's are often used in challenge-response tests by computer systems to determine whether or not the test's responder is human. In practice, the “challenge” is presented as a distorted sequence of letters that a human may readily identify but which is very difficult for current computational systems to do so (e.g., artificial intelligence-based web applications). The “response” is compared to a known solution and, if correct, the responder is granted access to a specified computer resource (e.g., data).
One use of CAPTCHAs is to prevent automated programs (“bots”) from accessing various types of computing resources or services. Illustrative uses include: prevention of comment spam in blogs; protection against automated email account registration and collection; prevention against the automated access and participation in online polls; prevention of automated dictionary attacks against password systems; prevention of automated search engine bots from indexing web pages; and the prevention of automated access to, and download of, data (e.g., from an online database).
Modern CAPTCHA systems are designed such that they require the simultaneous use of three separate abilities—invariant recognition, segmentation, and parsing. Invariant recognition refers to the ability to recognize a large amount of variation in the shapes of the presented symbols. While there can be a large number of versions for each symbol within a symbol-set that a human brain can successfully identify (e.g., letters and numbers), the same is not true for current computational systems, and teaching a computer system to recognize all the differing formations is extremely difficult. Segmentation, or the ability to separate one symbol from another, is also made difficult in CAPTCHAs by crowding together adjacent symbols so that no white space appears between them. Context is also critical. A good CAPTCHA must be understood holistically to correctly identify each symbol. For example, in one segment of a CAPTCHA, a symbol might look like an “m.” Only when the whole sequence of symbols is taken into account does it become clear that it is two adjacent “n's.” Even in isolation each of these problems pose a significant challenge to current computer technology.